package com.sso.login.controller;

import com.sso.login.pojo.User;
import com.sso.login.utils.LoginCache;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import org.thymeleaf.util.StringUtils;

import javax.servlet.http.Cookie;
import javax.servlet.http.HttpSession;

/**
 * @Author:LuJiaHong
 * @Date:2021/2/18~20:51:57
 * @Version 1.0
 * 页面跳转的逻辑
 * 做页面跳转必须是@Controller不能是@RestController，参考文章：https://blog.csdn.net/qq_36838406/article/details/94220890
 */
@Controller
@RequestMapping("/view")
public class ViewController {
    /**
     * 跳转到登录页面
     * @RequestParam表明不是从其它系统进入的登录系统，而直接进入的登录系统，那么定义默认target为空
     * @return
     */
    @GetMapping("/login")
    public String toLogin(@RequestParam(required = false,defaultValue = "") String target, HttpSession session,
                          @CookieValue(required = false,value = "TOKEN") Cookie cookie){
        //若为空，则默认登录后跳转到主页面去
        if(StringUtils.isEmpty(target)){
            target="http://www.lujiahong.com:9010";
        }
        //验证cookie是否登录过
        if(null !=cookie) {
            System.out.println("==================>>>>>>");
            String value = cookie.getValue();
            User user = LoginCache.loginUser.get(value);
            if (user != null) {
                //若为登录过的用户，则直接跳转到主页面，避免重复登录
                System.out.println(user);
                return "redirect:"+target;
            }
        }
        //TPDO；要做target地址是否合法的校验
        //不为空存到session里面去,重定向地址
        session.setAttribute("target",target);
        return "login";
    }
}
